<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  // function fn(){
  //   console.log(this)
  // }

  // fn();

  // 第一个参数是要改变的this的指向
  // fn.call("hello")
  // fn.call(123)
  // fn.call(true)
  // fn.call(false)

  // fn.apply("hello")
  // fn.apply(123)
  // fn.apply(true)
  // fn.apply(false)

  // console.log(typeof fn.bind("hello"))
  // fn.bind(123)()
  // fn.bind(true)()
  // fn.bind(false)()


  // --------

  // call和apply的返回值：原函数的返回值
  // bind的返回值为：改变了this指向之后的新函数

  // function fn(){
  //   return "hello"
  // }

  // console.log(fn.call());
  // console.log(fn.apply());
  // console.log(fn.bind());
  // console.log(fn.bind() === fn);


  // ----------

  function fn(a, b, c, d){
    console.log(a, b, c, d);
  }
  fn("hello", 4, 5, "world")

  fn.call("f", "abc", 6, 7, "qwe");

  fn.apply("f", ["zxc", 8, 9, "asd"]);

  fn.bind("f", "qaz", 4, 7, "wsx")();






  
</script>
</html>